import {SphericalHarmonics3} from '../math/SphericalHarmonics3.js'
import {Light} from './Light.js'

function LightProbe(sh, intensity) {
  Light.call(this, undefined, intensity)

  this.type = 'LightProbe'

  this.sh = sh !== undefined ? sh : new SphericalHarmonics3()
}

LightProbe.prototype = Object.assign(Object.create(Light.prototype), {
  constructor: LightProbe,

  isLightProbe: true,

  copy: function (source) {
    Light.prototype.copy.call(this, source)

    this.sh.copy(source.sh)

    return this
  },

  fromJSON: function (json) {
    this.intensity = json.intensity // TODO: Move this bit to Light.fromJSON();
    this.sh.fromArray(json.sh)

    return this
  },

  toJSON: function (meta) {
    const data = Light.prototype.toJSON.call(this, meta)

    data.object.sh = this.sh.toArray()

    return data
  },
})

export {LightProbe}
